package br.com.sixsoftware.helpdesk.view;

import java.io.Serializable;

import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sixsoftware.helpdesk.business.UsuarioBC;
import br.com.sixsoftware.helpdesk.domain.Usuario;
import br.com.sixsoftware.helpdesk.exception.NegocioException;
import br.com.sixsoftware.helpdesk.util.SessaoUsuario;

@Named
@SessionScoped
public class UsuarioMB implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Inject
	private FacesContext facesContext;

	@Inject
	private SessaoUsuario sessaoUsuario;

	@Inject
	private UsuarioBC usuarioBC;

	private Usuario usuario = new Usuario();

	public String preLogin() {
		usuario = new Usuario();
		return "login.xhtml";
	}

	public String login() {
		try {
			sessaoUsuario.setUsuarioAtual(usuarioBC.validarUsuarioInformado(usuario));
		} catch (NegocioException ne) {
			facesContext.addMessage("", new FacesMessage(FacesMessage.SEVERITY_ERROR, ne.getMessage(), null));
		}
		return "index.xhtml";
	}

	public String logout() {
		sessaoUsuario.setUsuarioAtual(null);
		facesContext.addMessage("", new FacesMessage(FacesMessage.SEVERITY_INFO, "Usuário deslogado com sucesso",
				null));
		return "index.xhtml";
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

}
